// #include<iostream>
// using namespace std;
// const int maxn=1002;
// int n,a[maxn],b[maxn],may[maxn],ans=11111111,print[maxn];
// void dfs(int x,int enda,int endb)
// {
//     if(x==n+1)
//     {
//         if(endb<ans)
//         {
//             for(int i=1;i<=n;i++)
//             print[i]=may[i];
//             ans=min(ans,endb);
//         }
//     }
//     for(int i=x;i<=n;i++)
//     {
//         int endaa=enda+a[may[i]],endbb=b[may[i]]+max(endaa,endb);
//         if(endbb<ans)
//         {
//             swap(may[i],may[x]);
//             dfs(x+1,endaa,endbb);
//             swap(may[i],may[x]);
//         }
//     }
// }
// int main()
// {
//     cin>>n;
//     for(int i=1;i<=n;i++)
//     cin>>a[i];
//     for(int i=1;i<=n;i++)
//     cin>>b[i],may[i]=i;
//     dfs(1,0,0);
//     cout<<ans<<endl;
//     for(int i=1;i<=n;i++)
//     cout<<print[i]<<" ";
// }
#include<iostream>
#include<algorithm>
using namespace std;
struct p{
    int a,b,id;
    bool operator<(const p&x) const{
        if(a<b) return a<x.a;
        else if(a>=b) return b>x.b;
    }
};
const int maxn=10003;
p le[maxn],ri[maxn];
int cnt1,cnt2,aa[maxn],bb[maxn];
int main()
{
    int n;cin>>n;
    for(int i=1;i<=n;i++)
    cin>>aa[i];
    for(int i=1;i<=n;i++)
    cin>>bb[i];
    for(int i=1;i<=n;i++)
    {
        if(aa[i]<bb[i])
        {
            le[++cnt1]={aa[i],bb[i],i};
        }
        else ri[++cnt2]={aa[i],bb[i],i};
    }
    sort(le+1,le+1+cnt1);
    sort(ri+1,ri+1+cnt2);
    int t1=0,t2=0;
    for(int i=1;i<=cnt1;i++)
    {
        t1+=le[i].a;
        t2=max(t1,t2)+le[i].b;
    }
    for(int i=1;i<=cnt2;i++)
    {
        t1+=ri[i].a;
        t2=max(t1,t2)+ri[i].b;
    }
    cout<<t2<<endl;
    for(int i=1;i<=cnt1;i++)
    cout<<le[i].id<<" ";
    for(int i=1;i<=cnt2;i++)
    cout<<ri[i].id<<" ";
}